package com.ezhan.utils;

import com.ezhan.gui.InstallGUI;

import java.io.File;

import static com.ezhan.logging.LogManager.log;

public class PathUtils {
    //遍历下载参数，将{INSTALL_PATH}更新为installPath
    public static String replacePathPlaceholder(String path, String installPath) {
        return path.replace("{INSTALL_PATH}", installPath);
    }

    // 在类中添加获取 EXE 路径的方法
    public File getExecutablePath() {
        try {
            // 获取 JAR 文件路径（运行时）
            File jarFile = new File(InstallGUI.class.getProtectionDomain().getCodeSource().getLocation().toURI());

            // 如果是开发环境（非 JAR 文件），使用当前工作目录
            if (!jarFile.getName().endsWith(".jar")) {
                return new File(System.getProperty("user.dir"));
            }

            // 返回 JAR 文件所在目录
            return jarFile.getParentFile();
        } catch (Exception e) {
            log("无法获取可执行文件路径: " + e.getMessage());
            return new File(System.getProperty("user.dir"));
        }
    }

    /*
   特殊字符转义
   \t ==> \\t   制表符
   \r ==> \\r   回车符
   \n ==> \\n   换行符
   \b ==> \\b   退格符
   \f ==> \\f   换页符
    */
    public String safePath(String path) {
        if (path == null || path.isEmpty()) {
            return path;
        }

        // 只转义特殊字符
        return path.replace("\\t", "\\\\t")
                .replace("\\r", "\\\\r")
                .replace("\\n", "\\\\n")
                .replace("\\b", "\\\\b")
                .replace("\\f", "\\\\f");
    }

    //遍历下载参数，将{INSTALL_PATH}更新为installPath
    public String[] replacePathPlaceholders(String[] args, String installPath) {
        String[] result = new String[args.length];
        for (int i = 0; i < args.length; i++) {
            result[i] = args[i].replace("{INSTALL_PATH}", installPath);
        }
        return result;
    }
}
